package com.bjpowernode.query;

import com.bjpowernode.validation.annotation.Password;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 *
 */
@Data
public class TUserQuery extends BaseQuery implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 主键，自动增长，用户ID
     */
    private Integer id;

    /**
     * 登录账号
     */
    @NotEmpty(message = "登录账户不能为空")
    @Size(min = 2 , max = 30 , message = "登录账号长度必须是2-30个字符")
    private String loginAct;

    /**
     * 登录密码
     */
    //@Size(min = 6 , max = 16 , message = "登录密码长度不合法")
    //@NotEmpty(message = "密码不能为空")
    @Password(required = false, min = 6, max = 16, message = "登录密码必须是6-16位")
    private String loginPwd;

    /**
     * 用户姓名
     */
    @NotEmpty(message = "不能为空")
    @Size(min = 2 , message = "至少两个字")
    @Pattern(regexp = "^[\\u4e00-\\u9fa5]+$" , message = "不是中文")
    private String name;

    /**
     * 用户手机
     */
    @NotEmpty(message = "不能为空")
    @Size(min = 11 , max = 11 , message = "手机号必须是11位")
    @Pattern(regexp = "^1[3-9]\\d{9}$" , message = "格式不合法")
    private String phone;

    /**
     * 用户邮箱
     */
    @NotEmpty(message = "不能为空")
    @Pattern(regexp = "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$" , message = "格式不合法")
    private String email;

    /**
     * 账户是否没有过期，0已过期 1正常
     */
    private Integer accountNoExpired;

    /**
     * 密码是否没有过期，0已过期 1正常
     */
    private Integer credentialsNoExpired;

    /**
     * 账号是否没有锁定，0已锁定 1正常
     */
    private Integer accountNoLocked;

    /**
     * 账号是否启用，0禁用 1启用
     */
    @NotNull(message = "不能为空")
    private Integer accountEnabled;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 创建人
     */
    private Integer createBy;

    /**
     * 编辑时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date editTime;

    /**
     * 编辑人
     */
    private Integer editBy;

    /**
     * 最近登录时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date lastLoginTime;


}
